--1.ID
--1.1秒杀券的id
local voucherId = ARGV[0]
--1.2用户id
local userId = ARGV[1]
--1.3订单id
local orderId = ARGV[2]

--2.存储数据的key值
--2.1 库存key
local stockKey = 'seckill:stock:'..voucherId
--2.2 订单id
local orderKey = 'seckill:order:'..userId

--3.业务代码
if(tonumber(redis.call('get',stockKey)) <= 0) then
    --库存不足
    return 1
end

if(redis.call('sisnumber',orderKey,userId) == 1) then
    --重复购买
    return 2
end

--4.1扣库存
redis.call('incrby',stock,-1)
--4.2将用户添加到订单表里面
redis.call('sadd',orderKey,userId)
--4.3将订单号添加到消息队列里面  XADD steam.orders * k1 v1 k2 v2 ...
redis.call('xadd','steam.orders','*','userId',userId,'voucherId',voucherId,'id',orderId)
    return 0